package com.redepronik.negosyscom.invfac.controller;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.redepronik.negosys.invfac.entity.Bodega;
import com.redepronik.negosys.invfac.entity.Bodegaempleadocargo;
import com.redepronik.negosys.invfac.entityAux.PersonaCedulaNombre;
import com.redepronik.negosys.invfac.service.BodegaService;
import com.redepronik.negosys.rrhh.entity.Ciudad;
import com.redepronik.negosys.rrhh.entity.Empleadocargo;
import com.redepronik.negosys.rrhh.service.CiudadService;
import com.redepronik.negosys.rrhh.service.EmpleadoService;

@Controller
@Scope("session")
public class BodegaBean {

	@Autowired
	private BodegaService bodegaService;

	@Autowired
	private EmpleadoService empleadoService;

	@Autowired
	private CiudadService ciudadService;

	private List<Bodega> listaBodegas;
	private Bodega bodega;
	private List<PersonaCedulaNombre> listaBodegueros;
	private List<Ciudad> listaCiudades;
	private List<Empleadocargo> listaEmpleadoCargo;

	private Empleadocargo bodeguero;

	private Bodegaempleadocargo encargado;

	private List<Bodegaempleadocargo> listaBodegaEmpleadoCargo;

	public BodegaBean() {

	}

	public void actualizar(ActionEvent actionEvent) {
		bodegaService.actualizar(bodega);
	}

	public void eliminar(ActionEvent actionEvent) {
		bodegaService.eliminar(bodega);
	}

	public void eliminarBodeguero(ActionEvent actionEvent) {
		bodegaService.eliminarBodeguero(encargado);
	}

	public Bodega getBodega() {
		return bodega;
	}

	public Empleadocargo getBodeguero() {
		return bodeguero;
	}

	public Bodegaempleadocargo getEncargado() {
		return encargado;
	}

	public List<Bodegaempleadocargo> getListaBodegaEmpleadoCargo() {
		return listaBodegaEmpleadoCargo;
	}

	public List<Bodega> getListaBodegas() {
		return listaBodegas;
	}

	public List<PersonaCedulaNombre> getListaBodegueros() {
		return listaBodegueros;
	}

	public List<Ciudad> getListaCiudades() {
		return listaCiudades;
	}

	public List<Empleadocargo> getListaEmpleadoCargo() {
		return listaEmpleadoCargo;
	}

	public void guardarBodegueros() {
		bodegaService.guardarBodegueros(listaBodegaEmpleadoCargo, bodega);
	}

	@PostConstruct
	public void init() {
		limpiarObjetos();
		listaBodegas = new ArrayList<Bodega>();
		listaCiudades = ciudadService.obtener(true);
		listaBodegas = bodegaService.obtenerTodos();
		listaBodegueros = empleadoService.obtenerPorCargo(3);
	}

	public void insertar(ActionEvent actionEvent) {
		bodega.setBodegaempleadocargos(listaBodegaEmpleadoCargo);
		listaBodegas = bodegaService.insertar(bodega);
	}

	public void insertarBodeguero() {
		bodegaService.insertarBodeguero(bodega, listaBodegaEmpleadoCargo,
				bodeguero);
	}

	public void limpiarBodegueros() {
		bodeguero = new Empleadocargo();
		listaBodegaEmpleadoCargo = new ArrayList<Bodegaempleadocargo>();

		if (bodega.getBodegaempleadocargos() != null
				&& !bodega.getBodegaempleadocargos().isEmpty())
			listaBodegaEmpleadoCargo = bodega.getBodegaempleadocargos();
	}

	public void limpiarObjetos() {
		bodega = new Bodega();
		bodeguero = new Empleadocargo();
		encargado = new Bodegaempleadocargo();
		listaBodegaEmpleadoCargo = new ArrayList<Bodegaempleadocargo>();
	}

	public void setBodega(Bodega Bodega) {
		this.bodega = Bodega;
	}

	public void setBodeguero(Empleadocargo bodeguero) {
		this.bodeguero = bodeguero;
	}

	public void setEncargado(Bodegaempleadocargo encargado) {
		this.encargado = encargado;
	}

	public void setListaBodegaEmpleadoCargo(
			List<Bodegaempleadocargo> listaBodegaEmpleadoCargo) {
		this.listaBodegaEmpleadoCargo = listaBodegaEmpleadoCargo;
	}

	public void setListaBodegas(List<Bodega> listaBodegas) {
		this.listaBodegas = listaBodegas;
	}

	public void setListaBodegueros(List<PersonaCedulaNombre> listaBodegueros) {
		this.listaBodegueros = listaBodegueros;
	}

	public void setListaCiudades(List<Ciudad> listaCiudades) {
		this.listaCiudades = listaCiudades;
	}

	public void setListaEmpleadoCargo(List<Empleadocargo> listaEmpleadoCargo) {
		this.listaEmpleadoCargo = listaEmpleadoCargo;
	}

}
